{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Normalizing Features with Graph Convolutional Networks"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 1,
      "metadata": {},
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "d:\\Programs\\Anaconda\\envs\\book2\\lib\\site-packages\\tqdm\\auto.py:22: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n",
            "  from .autonotebook import tqdm as notebook_tqdm\n"
          ]
        }
      ],
      "source": [
        "import torch\n",
        "!pip install -q torch-scatter~=2.1.0 torch-sparse~=0.6.16 torch-cluster~=1.6.0 torch-spline-conv~=1.2.1 torch-geometric==2.2.0 -f https://data.pyg.org/whl/torch-{torch.__version__}.html\n",
        "\n",
        "torch.manual_seed(1)\n",
        "torch.cuda.manual_seed(1)\n",
        "torch.cuda.manual_seed_all(1)\n",
        "torch.backends.cudnn.deterministic = True\n",
        "torch.backends.cudnn.benchmark = False"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "id": "-zKEpP7BsYSJ"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "np.random.seed(0)\n",
        "\n",
        "D = np.array([\n",
        "    [3, 0, 0, 0],\n",
        "    [0, 1, 0, 0],\n",
        "    [0, 0, 2, 0],\n",
        "    [0, 0, 0, 2]\n",
        "])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 3,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "GOO7c3MtsnLs",
        "outputId": "aaa32f84-d280-4316-ac39-7085030152ed"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "array([[0.33333333, 0.        , 0.        , 0.        ],\n",
              "       [0.        , 1.        , 0.        , 0.        ],\n",
              "       [0.        , 0.        , 0.5       , 0.        ],\n",
              "       [0.        , 0.        , 0.        , 0.5       ]])"
            ]
          },
          "execution_count": 3,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "np.linalg.inv(D)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 4,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "2tMPqruAs0RX",
        "outputId": "b50967ad-3874-4136-ae46-60346e5fb323"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "array([[0.25      , 0.        , 0.        , 0.        ],\n",
              "       [0.        , 0.5       , 0.        , 0.        ],\n",
              "       [0.        , 0.        , 0.33333333, 0.        ],\n",
              "       [0.        , 0.        , 0.        , 0.33333333]])"
            ]
          },
          "execution_count": 4,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "np.linalg.inv(D + np.identity(4))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 5,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zqNBVqCrtfCh",
        "outputId": "737bcba8-d410-42e0-b0d4-af8bcfc392c0"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "[[0.25       0.25       0.25       0.25      ]\n",
            " [0.5        0.5        0.         0.        ]\n",
            " [0.33333333 0.         0.33333333 0.33333333]\n",
            " [0.33333333 0.         0.33333333 0.33333333]]\n",
            "\n",
            "[[0.25       0.5        0.33333333 0.33333333]\n",
            " [0.25       0.5        0.         0.        ]\n",
            " [0.25       0.         0.33333333 0.33333333]\n",
            " [0.25       0.         0.33333333 0.33333333]]\n"
          ]
        }
      ],
      "source": [
        "A = np.array([\n",
        "    [1, 1, 1, 1],\n",
        "    [1, 1, 0, 0],\n",
        "    [1, 0, 1, 1],\n",
        "    [1, 0, 1, 1]\n",
        "])\n",
        "\n",
        "print(np.linalg.inv(D + np.identity(4)) @ A)\n",
        "print()\n",
        "print(A @ np.linalg.inv(D + np.identity(4)))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 6,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 604
        },
        "id": "SBwA2oQb2bAY",
        "outputId": "bd2eac26-6106-44ba-fdfd-aa9c52a98269"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<BarContainer object of 37 artists>"
            ]
          },
          "execution_count": 6,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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9++XJDVt2tTN1XnXuXPndOLECTVt2lTdunWTn5+fwzGSl5en/Pz82/oYWb58uUJDQzVgwIBrjjPLMSFJ0dHRCg8PdzgWSktLlZOTYz8WrFariouLlZubax+zadMmVVVV2cPj7eJKGDp27Jg2btyoxo0b/+A8+/fvl4+PT7XLR7ebr776St98843998JMx8UVS5cuVbdu3dSpU6cfHHvDx8VN35YNB6tXrzYCAgKMFStWGEeOHDHGjBljBAcHGzabzduludXYsWONoKAgY8uWLcaZM2fs04ULFwzDMIzjx48baWlpxp49e4yTJ08a7733nnH33XcbDz74oJcrd73nnnvO2LJli3Hy5Elj+/btRlxcnHHnnXcahYWFhmEYxi9/+UujRYsWxqZNm4w9e/YYVqvVsFqtXq7afSorK40WLVoYkydPdmg3wzFx9uxZY9++fca+ffsMScbcuXONffv22Z+cmj17thEcHGy89957xoEDB4yBAwca0dHRxsWLF+3L6Nevn9GlSxcjJyfH+OSTT4xWrVoZTzzxhLc26YZda19UVFQYP/vZz4xmzZoZ+/fvd/gbUl5ebhiGYezYscOYN2+esX//fuPEiRPG66+/bjRp0sQYPny4l7fMedfaF2fPnjWef/55Izs72zh58qSxceNGo2vXrkarVq2MsrIy+zLMcFxcUVJSYtSvX99YvHhxtfldeVwQiNxg4cKFRosWLQx/f3+jR48exs6dO71dkttJqnFavny5YRiGkZ+fbzz44INGSEiIERAQYNxzzz3GpEmTjJKSEu8W7gaPP/640bRpU8Pf39+46667jMcff9w4fvy4vf/ixYvGr371K+OOO+4w6tevb/zP//yPcebMGS9W7F4bNmwwJBl5eXkO7WY4JjZv3lzj78WIESMMw/jPo/dTp041wsLCjICAAKNPnz7V9tM333xjPPHEE0bDhg2NwMBAY9SoUcbZs2e9sDU351r74uTJk1f9G7J582bDMAwjNzfXiI2NNYKCgoy6desa7dq1M2bNmuUQEmqLa+2LCxcuGH379jWaNGli+Pn5GZGRkcbo0aOr/U+1GY6LK1599VWjXr16RnFxcbX5XXlcWAzDMJw7pwQAAHB74R4iAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiAABgegQiALecqKgozZ8/36XL/OKLL2SxWOzflwYA30cgAuC0kSNHymKxaPbs2Q7t7777riwWi5eqAoAbRyACcEPq1q2rl156Sd9++623S7mlVFRUeLsEADeAQATghsTFxSk8PFzp6enXHPfWW2+pffv2CggIUFRUlF555RWH/sLCQj366KOqV6+eoqOj9de//rXaMoqLi/X000+rSZMmCgwMVO/evfXpp59ec727du1Sly5dVLduXXXv3l379u2rNubQoUPq37+/GjZsqLCwMD311FP697//be8/e/asEhIS1KBBAzVt2lTz5s3Tww8/rAkTJtjHREVFaebMmRo+fLgCAwM1ZswYSdInn3yiBx54QPXq1VPz5s01btw4nT9/3j5feXm5nn/+ed11111q0KCBYmNjtWXLlmtuEwD3IRABuCG+vr6aNWuWFi5cqK+++qrGMbm5uRo6dKiGDRumgwcPasaMGZo6dapWrFhhHzNy5EidOnVKmzdv1t///nctWrRIhYWFDst57LHHVFhYqA8//FC5ubnq2rWr+vTpo6KiohrXe+7cOf30pz9VTEyMcnNzNWPGDD3//PMOY4qLi9W7d2916dJFe/bs0fr161VQUKChQ4fax6SkpGj79u36xz/+oczMTH388cfau3dvtfW9/PLL6tSpk/bt26epU6fqxIkT6tevn4YMGaIDBw7ozTff1CeffKLk5GT7PMnJycrOztbq1at14MABPfbYY+rXr5+OHTv2g/segBsYAOCkESNGGAMHDjQMwzB69uxp/OIXvzAMwzDeeecd4/t/Vp588knjkUcecZh30qRJRkxMjGEYhpGXl2dIMnbt2mXvP3r0qCHJmDdvnmEYhvHxxx8bgYGBRllZmcNyWrZsabz66qs11vfqq68ajRs3Ni5evGhvW7x4sSHJ2Ldvn2EYhjFz5kyjb9++DvOdOnXKkGTk5eUZpaWlhp+fn7FmzRp7f3FxsVG/fn1j/Pjx9rbIyEhj0KBBDstJTEw0xowZ49D28ccfGz4+PsbFixeNL7/80vD19TW+/vprhzF9+vQxUlNTa9wmAO5Vx6tpDECt99JLL6l3797VzsBI0tGjRzVw4ECHtl69emn+/PmqrKzU0aNHVadOHXXr1s3e37ZtWwUHB9s/f/rppzp37pwaN27ssJyLFy/qxIkTNdZ09OhRdezYUXXr1rW3Wa1WhzGffvqpNm/erIYNG1ab/8SJE7p48aIuXbqkHj162NuDgoLUpk2bauO7d+9ebdkHDhxwuPxnGIaqqqp08uRJff7556qsrFTr1q0d5isvL6+2nQA8g0AE4KY8+OCDio+PV2pqqkaOHOny5Z87d05Nmzat8f6a7wenG1nuo48+qpdeeqlaX9OmTXX8+PHrXlaDBg2qLfuZZ57RuHHjqo1t0aKFDhw4IF9fX+Xm5srX19ehv6aABsD9CEQAbtrs2bPVuXPnamdP2rVrp+3btzu0bd++Xa1bt5avr6/atm2ry5cvKzc3V/fdd58kKS8vT8XFxfbxXbt2lc1mU506dRQVFXVd9bRr105/+ctfVFZWZj9LtHPnTocxXbt21VtvvaWoqCjVqVP9T+Hdd98tPz8/7d69Wy1atJAklZSU6LPPPtODDz54zfV37dpVR44c0T333FNjf5cuXVRZWanCwkI98MAD17VNANyLm6oB3LQOHTooISFBCxYscGh/7rnnlJWVpZkzZ+qzzz7TypUr9cc//tF+ea1Nmzbq16+fnnnmGeXk5Cg3N1dPP/206tWrZ19GXFycrFarBg0apI8++khffPGFduzYoRdeeEF79uypsZ4nn3xSFotFo0eP1pEjR/TBBx/o5ZdfdhiTlJSkoqIiPfHEE9q9e7dOnDihDRs2aNSoUaqsrFSjRo00YsQITZo0SZs3b9bhw4eVmJgoHx+fH3zX0uTJk7Vjxw4lJydr//79OnbsmN577z37TdWtW7dWQkKChg8frrffflsnT57Url27lJ6ernXr1jm9/wHcPAIRAJdIS0tTVVWVQ1vXrl31t7/9TatXr9a9996radOmKS0tzeHS2vLlyxUREaGHHnpIgwcP1pgxYxQaGmrvt1gs+uCDD/Tggw9q1KhRat26tYYNG6Yvv/xSYWFhNdbSsGFDvf/++zp48KC6dOmiF154odqlsYiICG3fvl2VlZXq27evOnTooAkTJig4OFg+Pv/50zh37lxZrVb99Kc/VVxcnHr16qV27do53JtUk44dO2rr1q367LPP9MADD6hLly6aNm2aIiIiHLZ7+PDheu6559SmTRsNGjTI4WwUAM+yGIZheLsIAKgNzp8/r7vuukuvvPKKEhMTvV0OABfiHiIAuIp9+/bpn//8p3r06KGSkhKlpaVJUrUn5wDUfgQiALiGl19+WXl5efL391e3bt308ccf68477/R2WQBcjEtmAADA9LipGgAAmB6BCAAAmB6BCAAAmB6BCAAAmB6BCAAAmB6BCAAAmB6BCAAAmB6BCAAAmN7/A443vLKuBe72AAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "from torch_geometric.datasets import Planetoid\n",
        "from torch_geometric.utils import degree\n",
        "from collections import Counter\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "# Import dataset from PyTorch Geometric\n",
        "dataset = Planetoid(root=\".\", name=\"Cora\")\n",
        "data = dataset[0]\n",
        "\n",
        "# Get list of degrees for each node\n",
        "degrees = degree(data.edge_index[0]).numpy()\n",
        "\n",
        "# Count the number of nodes for each degree\n",
        "numbers = Counter(degrees)\n",
        "\n",
        "# Bar plot\n",
        "fig, ax = plt.subplots()\n",
        "ax.set_xlabel('Node degree')\n",
        "ax.set_ylabel('Number of nodes')\n",
        "plt.bar(numbers.keys(), numbers.values())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 7,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 604
        },
        "id": "XZCz3QiW3p2q",
        "outputId": "35ac7dde-a80c-4d4c-def9-a5a649249689"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<BarContainer object of 233 artists>"
            ]
          },
          "execution_count": 7,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkQAAAGwCAYAAABIC3rIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/P9b71AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA28ElEQVR4nO3deVyVdd7/8fdhdQVyYUsU01xwX5KY0qkk0aw7R39TJuWuk0GumTqllt53qHeZ2ZTOktJMi9WUtlgY4laKmigparhkainQRHCUFBG+vz96eO5OkHnswAGu1/PxuB5yfb/fc12f7zl1eD+uDZsxxggAAMDCvDxdAAAAgKcRiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOURiAAAgOX5eLqAmqCsrEynTp1Sw4YNZbPZPF0OAAC4AsYYnTlzRuHh4fLyuvwxIALRFTh16pQiIiI8XQYAALgKJ0+eVLNmzS47hkB0BRo2bCjpxzc0ICDAw9UAAIArYbfbFRER4fg9fjkEoitw6TRZQEAAgQgAgBrmSi534aJqAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeQQiAABgeR4NRElJSbrhhhvUsGFDBQcHa9CgQcrOznYac8stt8hmszktDz74oNOYEydOaODAgapXr56Cg4M1ffp0Xbx40WnMpk2b1L17d/n7+6t169ZKTk6u7OkBAIAawqOBaPPmzUpISND27duVmpqqkpIS9evXT0VFRU7jxo0bp9OnTzuWRYsWOfpKS0s1cOBAXbhwQdu2bdPLL7+s5ORkzZkzxzHm2LFjGjhwoG699VZlZmZq8uTJGjt2rNatW1dlcwUAANWXzRhjPF3EJd9++62Cg4O1efNm9enTR9KPR4i6du2qJUuWVPiajz76SHfeeadOnTqlkJAQSdLy5cs1Y8YMffvtt/Lz89OMGTO0du1aZWVlOV43dOhQFRQUKCUl5VfrstvtCgwMVGFhoQICAn77RAEAQKVz5fd3tbqGqLCwUJLUqFEjp/ZXX31VTZo0UceOHTVr1iz98MMPjr709HR16tTJEYYkKS4uTna7Xfv373eMiY2NddpmXFyc0tPTK6yjuLhYdrvdaQEAALWXj6cLuKSsrEyTJ0/WTTfdpI4dOzrahw0bphYtWig8PFx79+7VjBkzlJ2drXfeeUeSlJOT4xSGJDnWc3JyLjvGbrfr3Llzqlu3rlNfUlKSnnzySbfPEQAAVE/VJhAlJCQoKytLn376qVP7+PHjHT936tRJYWFh6tu3r44ePapWrVpVSi2zZs3S1KlTHet2u10RERGVsi8AAOB51eKUWWJioj744ANt3LhRzZo1u+zY6OhoSdKRI0ckSaGhocrNzXUac2k9NDT0smMCAgLKHR2SJH9/fwUEBDgtAACg9vJoIDLGKDExUatXr9aGDRvUsmXLX31NZmamJCksLEySFBMTo3379ikvL88xJjU1VQEBAYqKinKMSUtLc9pOamqqYmJi3DQTAABQk3k0ECUkJOiVV17Ra6+9poYNGyonJ0c5OTk6d+6cJOno0aOaP3++MjIy9NVXX+m9997T8OHD1adPH3Xu3FmS1K9fP0VFRemBBx7Q559/rnXr1unxxx9XQkKC/P39JUkPPvigvvzySz366KP64osv9OKLL+rNN9/UlClTPDZ3AABQfXj0tnubzVZh+8qVKzVy5EidPHlS999/v7KyslRUVKSIiAj94Q9/0OOPP+50Guv48eOaMGGCNm3apPr162vEiBFasGCBfHz+7xKpTZs2acqUKTpw4ICaNWum2bNna+TIkVdUJ7fdAwBQ87jy+7taPYeouiIQAQBQ89TY5xABAAB4AoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYHoEIAABYnkcDUVJSkm644QY1bNhQwcHBGjRokLKzs53GnD9/XgkJCWrcuLEaNGigIUOGKDc312nMiRMnNHDgQNWrV0/BwcGaPn26Ll686DRm06ZN6t69u/z9/dW6dWslJydX9vQAAEAN4dFAtHnzZiUkJGj79u1KTU1VSUmJ+vXrp6KiIseYKVOm6P3339dbb72lzZs369SpUxo8eLCjv7S0VAMHDtSFCxe0bds2vfzyy0pOTtacOXMcY44dO6aBAwfq1ltvVWZmpiZPnqyxY8dq3bp1VTpfAABQPdmMMcbTRVzy7bffKjg4WJs3b1afPn1UWFiopk2b6rXXXtP/+3//T5L0xRdfqH379kpPT9eNN96ojz76SHfeeadOnTqlkJAQSdLy5cs1Y8YMffvtt/Lz89OMGTO0du1aZWVlOfY1dOhQFRQUKCUl5VfrstvtCgwMVGFhoQICAipn8gAAwK1c+f1dra4hKiwslCQ1atRIkpSRkaGSkhLFxsY6xrRr107NmzdXenq6JCk9PV2dOnVyhCFJiouLk91u1/79+x1jfrqNS2MubePniouLZbfbnRYAAFB7VZtAVFZWpsmTJ+umm25Sx44dJUk5OTny8/NTUFCQ09iQkBDl5OQ4xvw0DF3qv9R3uTF2u13nzp0rV0tSUpICAwMdS0REhFvmCAAAqqdqE4gSEhKUlZWlVatWeboUzZo1S4WFhY7l5MmTni4JAABUIh9PFyBJiYmJ+uCDD7RlyxY1a9bM0R4aGqoLFy6ooKDA6ShRbm6uQkNDHWN27tzptL1Ld6H9dMzP70zLzc1VQECA6tatW64ef39/+fv7u2VuAACg+vPoESJjjBITE7V69Wpt2LBBLVu2dOrv0aOHfH19lZaW5mjLzs7WiRMnFBMTI0mKiYnRvn37lJeX5xiTmpqqgIAARUVFOcb8dBuXxlzaBgAAsDaP3mX20EMP6bXXXtO7776rtm3bOtoDAwMdR24mTJigDz/8UMnJyQoICNDDDz8sSdq2bZukH2+779q1q8LDw7Vo0SLl5OTogQce0NixY/XUU09J+vG2+44dOyohIUGjR4/Whg0bNHHiRK1du1ZxcXG/Wid3mQEAUPO48vvbo4HIZrNV2L5y5UqNHDlS0o8PZpw2bZpef/11FRcXKy4uTi+++KLjdJgkHT9+XBMmTNCmTZtUv359jRgxQgsWLJCPz/+dEdy0aZOmTJmiAwcOqFmzZpo9e7ZjH7+GQAQAQM1TYwJRTUEgAgCg5qmxzyECAADwBAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAIRAACwPAJRNRE5c62nSwAAwLLcEogKCgrcsRkAAACPcDkQLVy4UG+88YZj/Z577lHjxo117bXX6vPPP3drcQAAAFXB5UC0fPlyRURESJJSU1OVmpqqjz76SAMGDND06dPdXiAAAEBl83H1BTk5OY5A9MEHH+iee+5Rv379FBkZqejoaLcXCAAAUNlcPkJ0zTXX6OTJk5KklJQUxcbGSpKMMSotLXVvdQAAAFXA5SNEgwcP1rBhw3T99dfru+++04ABAyRJe/bsUevWrd1eIAAAQGVzORA9++yzioyM1MmTJ7Vo0SI1aNBAknT69Gk99NBDbi8QAACgsrkciHx9ffXII4+Ua58yZYpbCgIAAKhqV/Ucon/961+6+eabFR4eruPHj0uSlixZonfffdetxQEAAFQFlwPRsmXLNHXqVA0YMEAFBQWOC6mDgoK0ZMkSd9cHAABQ6VwORM8//7z+/ve/67HHHpO3t7ejvWfPntq3b59biwMAAKgKLgeiY8eOqVu3buXa/f39VVRU5JaiAAAAqpLLgahly5bKzMws156SkqL27du7oyYAAIAq5fJdZlOnTlVCQoLOnz8vY4x27typ119/XUlJSfrHP/5RGTUCAABUKpcD0dixY1W3bl09/vjj+uGHHzRs2DCFh4frueee09ChQyujRgAAgErlciCSpPj4eMXHx+uHH37Q2bNnFRwc7O66AAAAqsxVBaJL6tWrp3r16rmrFgAAAI+4okDUrVs32Wy2K9rg7t27f1NBAAAAVe2KAtGgQYMcP58/f14vvviioqKiFBMTI0navn279u/fz98yAwAANdIVBaK5c+c6fh47dqwmTpyo+fPnlxtz8uRJ91YHAABQBVx+DtFbb72l4cOHl2u///779fbbb7ulKAAAgKrkciCqW7eutm7dWq5969atqlOnjluK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FwYAAFBVruo5RJcQhAAAQG3g8kXVAAAAtQ2BCAAAWB6BqBqJnLnW0yUAAGBJLgWikpIS9e3bV4cPH66segAAAKqcS4HI19dXe/furaxaAAAAPMLlU2b333+/XnrppcqoBQAAwCNcvu3+4sWLWrFihdavX68ePXqofv36Tv2LFy92W3EAAABVweVAlJWVpe7du0uSDh065NRns9ncUxUAAEAVcjkQbdy4sTLqAAAA8Jirvu3+yJEjWrdunc6dOydJMsa4rSgAAICq5HIg+u6779S3b1+1adNGd9xxh06fPi1JGjNmjKZNm+b2AgEAACqby4FoypQp8vX11YkTJ1SvXj1H+7333quUlBS3FgcAAFAVXL6G6OOPP9a6devUrFkzp/brr79ex48fd1thAAAAVcXlI0RFRUVOR4Yuyc/Pl7+/v1uKAgAAqEouB6LevXvrn//8p2PdZrOprKxMixYt0q233urW4gAAAKqCy6fMFi1apL59+2rXrl26cOGCHn30Ue3fv1/5+fnaunVrZdQIAABQqVw+QtSxY0cdOnRIN998s+6++24VFRVp8ODB2rNnj1q1alUZNQIAAFQql48QSVJgYKAee+wxd9cCAADgEVcViL7//nu99NJLOnjwoCQpKipKo0aNUqNGjdxaHAAAQFVw+ZTZli1bFBkZqaVLl+r777/X999/r6VLl6ply5basmVLZdQIAABQqVw+QpSQkKB7771Xy5Ytk7e3tySptLRUDz30kBISErRv3z63FwkAAFCZXD5CdOTIEU2bNs0RhiTJ29tbU6dO1ZEjR9xaHAAAQFVwORB1797dce3QTx08eFBdunRxS1EAAABV6YpOme3du9fx88SJEzVp0iQdOXJEN954oyRp+/bteuGFF7RgwYLKqRIAAKAS2Ywx5tcGeXl5yWaz6deG2mw2lZaWuq246sJutyswMFCFhYUKCAiolH1EzlwrSfpqwcBK2T4AAFbjyu/vKzpCdOzYMbcUBgAAUB1dUSBq0aJFZdcBAADgMVf1YMZTp07p008/VV5ensrKypz6Jk6c6JbCAAAAqorLgSg5OVl/+tOf5Ofnp8aNG8tmszn6bDYbgQgAANQ4Lgei2bNna86cOZo1a5a8vFy+ax8AAKDacTnR/PDDDxo6dChhCAAA1Boup5oxY8borbfeqoxaAAAAPMLlU2ZJSUm68847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IxABAADLIxABAADLIxB50AsvvKDIyEjVqVNH0dHR2rlzp6dLcostW7borrvuUnh4uGw2m9asWePUb4zRnDlzFBYWprp16yo2NlaHDx92GpOfn6/4+HgFBAQoKChIY8aM0dmzZ6twFlcnKSlJN9xwgxo2bKjg4GANGjRI2dnZTmPOnz+vhIQENW7cWA0aNNCQIUPKPTT0xIkTGjhwoOrVq6fg4GBNnz5dFy9erMqpuGzZsmXq3Lmz44FrMTEx+uijjxz9tXXev2TBggWy2WyaPHmyo602vwdPPPGEbDab09KuXTtHf22euyR98803uv/++9W4cWPVrVtXnTp10q5duxz9tfl7LzIystxnb7PZlJCQIKkGffbu+FthcN2qVauMn5+fWbFihdm/f78ZN26cCQoKMrm5uZ4u7Tf78MMPzWOPPWbeeecdI8msXr3aqX/BggUmMDDQrFmzxnz++efmv/7rv0zLli3NuXPnHGP69+9vunTpYrZv324++eQT07p1a3PfffdV8UxcFxcXZ1auXGmysrJMZmamueOOO0zz5s3N2bNnHWMefPBBExERYdLS0syuXbvMjTfeaH73u985+i9evGg6duxoYmNjzZ49e8yHH35omjRpYmbNmuWJKV2x9957z6xdu9YcOnTIZGdnmz//+c/G19fXZGVlGWNq77wrsnPnThMZGWk6d+5sJk2a5Givze/B3LlzTYcOHczp06cdy7fffuvor81zz8/PNy1atDAjR440O3bsMF9++aVZt26dOXLkiGNMbf7ey8vLc/rcU1NTjSSzceNGY0zN+ewJRB7Sq1cvk5CQ4FgvLS014eHhJikpyYNVud/PA1FZWZkJDQ01//u//+toKygoMP7+/ub11183xhhz4MABI8l89tlnjjEfffSRsdls5ptvvqmy2t0hLy/PSDKbN282xvw4V19fX/PWW285xhw8eNBIMunp6caYHwOll5eXycnJcYxZtmyZCQgIMMXFxVU7gd/ommuuMf/4xz8sNe8zZ86Y66+/3qSmpprf//73jkBU29+DuXPnmi5dulTYV9vnPmPGDHPzzTf/Yr/VvvcmTZpkWrVqZcrKymrUZ88pMw+4cOGCMjIyFBsb62jz8vJSbGys0tPTPVhZ5Tt27JhycnKc5h4YGKjo6GjH3NPT0xUUFKSePXs6xsTGxsrLy0s7duyo8pp/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FxfrkUce0bXXXqv69esrOjpamzZtuuycAFwdAhGASuPt7a2nnnpKzz//vL7++usKx2RkZOiee+7R0KFDtW/fPj3xxBOaPXu2kpOTHWNGjhypkydPauPGjfr3v/+tF198UXl5eU7b+eMf/6i8vDx99NFHysjIUPfu3dW3b1/l5+dXuN+zZ8/qzjvvVFRUlDIyMvTEE0/okUcecRpTUFCg2267Td26ddOuXbuUkpKi3Nxc3XPPPY4xU6dO1datW/Xee+8pNTVVn3zyiXbv3l1uf08//bS6dOmiPXv2aPbs2Tp69Kj69++vIUOGaO/evXrjjTf06aefKjEx0fGaxMREpaena9WqVdq7d6/++Mc/qn///jp8+PCvvvcAXGQAoBKMGDHC3H333cYYY2688UYzevRoY4wxq1evNj/96hk2bJi5/fbbnV47ffp0ExUVZYwxJjs720gyO3fudPQfPHjQSDLPPvusMcaYTz75xAQEBJjz5887badVq1bmr3/9a4X1/fWvfzWNGzc2586dc7QtW7bMSDJ79uwxxhgzf/58069fP6fXnTx50kgy2dnZxm63G19fX/PWW285+gsKCky9evXMpEmTHG0tWrQwgwYNctrOmDFjzPjx453aPvnkE+Pl5WXOnTtnjh8/bry9vc0333zjNKZv375m1qxZFc4JwNXz8WgaA2AJCxcu1G233VbuCIwkHTx4UHfffbdT20033aQlS5aotLRUBw8elI+Pj3r06OHob9eunYKCghzrn3/+uc6ePavGjRs7befcuXM6evRohTUdPHhQnTt3Vp06dRxtMTExTmM+//xzbdy4UQ0aNCj3+qNHj+rcuXMqKSlRr169HO2BgYFq27ZtufE9e/Yst+29e/c6nf4zxqisrEzHjh3Tl19+qdLSUrVp08bpdcXFxeXmCeC3IxABqHR9+vRRXFycZs2apZEjR7p9+2fPnlVYWFiF19f8NDhdzXbvuusuLVy4sFxfWFiYjhw5csXbql+/frlt/+lPf9LEiRPLjW3evLn27t0rb29vZWRkyNvb26m/ooAG4LchEAGoEgsWLFDXrl3LHT1p3769tm7d6tS2detWtWnTRt7e3mrXrp0uXryojIwM3XDDDZKk7OxsFRQUOMZ3795dOTk58vHxUWRk5BXV0759e/3rX//S+fPnHUeJtm/f7jSme/fuevvttxUZGSkfn/Jfl9ddd518fX312WefqXnz5pKkwsJCHTp0SH369Lns/rt3764DBw6odevWFfZ369ZNpaWlysvLU+/eva9oTgCuHhdVA6gSnTp1Unx8vJYuXerUPm3aNKWlpWn+/Pk6dOiQXn75Zf3lL39xnF5r27at+vfvrz/96U/asWOHMjIyNHbsWNWtW9exjdjYWMXExGjQoEH6+OOP9dVXX2nbtm167LHHtGvXrgrrGTZsmGw2m8aNG6cDBw7oww8/1NNPP+00JiEhQfn5+brvvvv02Wef6ejRo1q3bp1GjRql0tJSNWzYUCNGjND06dO1ceNG7d+/X2PGjJGXl9evPmtpxowZ2rZtmxITE5WZmanDhw/r3XffdVxU3aZNG8XHx2v48OF65513dOzYMe3cuVNJSUlau3aty+8/gMsjEAGoMvPmzVNZWZlTW/fu3fXmm29q1apV6tixo+bMmaN58+Y5nVpbuXKlwsPD9fvf/16DBw/W+PHjFRwc7Oi32Wz68MMP1adPH40aNUpt2rTR0KFDdfz4cYWEhFRYS4MGDfT+++9r37596tatmx577LFyp8bCw8O1detWlZaWql+/furUqZMmT56soKAgeXn9+PW5ePFixcTE6M4771RsbKxuuukmtW/f3unapIp07txZmzdv1qFDh9S7d29169ZNc+bMUXh4uNO8hw8frmnTpqlt27YaNGiQ09EoAO5jM8YYTxcBALVFUVGRrr32Wj3zzDMaM2aMp8sBcIW4hggAfoM9e/boiy++UK9evVRYWKh58+ZJUrk75wBUbwQiAPiNnn76aWVnZ8vPz089evTQJ598oiZNmni6LAAu4JQZAACwPC6qBgAAlkcgAgAAlkcgAgAAlkcgAgAAlkcgAgAAlkcgAgAAlkcgAgAAlkcgAgAAlvf/AQMxX4u4+65oAAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "from torch_geometric.datasets import FacebookPagePage\n",
        "\n",
        "# Import dataset from PyTorch Geometric\n",
        "dataset = FacebookPagePage(root=\".\")\n",
        "data = dataset[0]\n",
        "\n",
        "# Create masks\n",
        "data.train_mask = range(18000)\n",
        "data.val_mask = range(18001, 20000)\n",
        "data.test_mask = range(20001, 22470)\n",
        "\n",
        "# Get list of degrees for each node\n",
        "degrees = degree(data.edge_index[0]).numpy()\n",
        "\n",
        "# Count the number of nodes for each degree\n",
        "numbers = Counter(degrees)\n",
        "\n",
        "# Bar plot\n",
        "fig, ax = plt.subplots()\n",
        "ax.set_xlabel('Node degree')\n",
        "ax.set_ylabel('Number of nodes')\n",
        "plt.bar(numbers.keys(), numbers.values())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 8,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "BY3jGqau2tTj",
        "outputId": "a1f0cc33-c3b1-4fcf-cc37-4546259c833b"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "GCN(\n",
            "  (gcn1): GCNConv(1433, 16)\n",
            "  (gcn2): GCNConv(16, 7)\n",
            ")\n",
            "Epoch   0 | Train Loss: 1.932 | Train Acc: 15.71% | Val Loss: 1.94 | Val Acc: 15.20%\n",
            "Epoch  20 | Train Loss: 0.099 | Train Acc: 100.00% | Val Loss: 0.75 | Val Acc: 77.80%\n",
            "Epoch  40 | Train Loss: 0.014 | Train Acc: 100.00% | Val Loss: 0.72 | Val Acc: 77.20%\n",
            "Epoch  60 | Train Loss: 0.015 | Train Acc: 100.00% | Val Loss: 0.71 | Val Acc: 77.80%\n",
            "Epoch  80 | Train Loss: 0.017 | Train Acc: 100.00% | Val Loss: 0.71 | Val Acc: 77.00%\n",
            "Epoch 100 | Train Loss: 0.016 | Train Acc: 100.00% | Val Loss: 0.71 | Val Acc: 76.40%\n",
            "\n",
            "GCN test accuracy: 79.70%\n",
            "\n"
          ]
        }
      ],
      "source": [
        "import torch\n",
        "torch.manual_seed(1)\n",
        "import torch.nn.functional as F\n",
        "from torch_geometric.nn import GCNConv\n",
        "\n",
        "dataset = Planetoid(root=\".\", name=\"Cora\")\n",
        "data = dataset[0]\n",
        "\n",
        "def accuracy(y_pred, y_true):\n",
        "    \"\"\"Calculate accuracy.\"\"\"\n",
        "    return torch.sum(y_pred == y_true) / len(y_true)\n",
        "\n",
        "\n",
        "class GCN(torch.nn.Module):\n",
        "    \"\"\"Graph Convolutional Network\"\"\"\n",
        "    def __init__(self, dim_in, dim_h, dim_out):\n",
        "        super().__init__()\n",
        "        self.gcn1 = GCNConv(dim_in, dim_h)\n",
        "        self.gcn2 = GCNConv(dim_h, dim_out)\n",
        "\n",
        "    def forward(self, x, edge_index):\n",
        "        h = self.gcn1(x, edge_index)\n",
        "        h = torch.relu(h)\n",
        "        h = self.gcn2(h, edge_index)\n",
        "        return F.log_softmax(h, dim=1)\n",
        "\n",
        "    def fit(self, data, epochs):\n",
        "        criterion = torch.nn.CrossEntropyLoss()\n",
        "        optimizer = torch.optim.Adam(self.parameters(),\n",
        "                                      lr=0.01,\n",
        "                                      weight_decay=5e-4)\n",
        "\n",
        "        self.train()\n",
        "        for epoch in range(epochs+1):\n",
        "            optimizer.zero_grad()\n",
        "            out = self(data.x, data.edge_index)\n",
        "            loss = criterion(out[data.train_mask], data.y[data.train_mask])\n",
        "            acc = accuracy(out[data.train_mask].argmax(dim=1),\n",
        "                          data.y[data.train_mask])\n",
        "            loss.backward()\n",
        "            optimizer.step()\n",
        "\n",
        "            if(epoch % 20 == 0):\n",
        "                val_loss = criterion(out[data.val_mask], data.y[data.val_mask])\n",
        "                val_acc = accuracy(out[data.val_mask].argmax(dim=1),\n",
        "                                  data.y[data.val_mask])\n",
        "                print(f'Epoch {epoch:>3} | Train Loss: {loss:.3f} | Train Acc:'\n",
        "                      f' {acc*100:>5.2f}% | Val Loss: {val_loss:.2f} | '\n",
        "                      f'Val Acc: {val_acc*100:.2f}%')\n",
        "\n",
        "    @torch.no_grad()\n",
        "    def test(self, data):\n",
        "        self.eval()\n",
        "        out = self(data.x, data.edge_index)\n",
        "        acc = accuracy(out.argmax(dim=1)[data.test_mask], data.y[data.test_mask])\n",
        "        return acc\n",
        "\n",
        "# Create the Vanilla GNN model\n",
        "gcn = GCN(dataset.num_features, 16, dataset.num_classes)\n",
        "print(gcn)\n",
        "\n",
        "# Train\n",
        "gcn.fit(data, epochs=100)\n",
        "\n",
        "# Test\n",
        "acc = gcn.test(data)\n",
        "print(f'\\nGCN test accuracy: {acc*100:.2f}%\\n')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 9,
      "metadata": {},
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "GCN(\n",
            "  (gcn1): GCNConv(128, 16)\n",
            "  (gcn2): GCNConv(16, 4)\n",
            ")\n",
            "Epoch   0 | Train Loss: 1.463 | Train Acc: 20.72% | Val Loss: 1.45 | Val Acc: 20.71%\n",
            "Epoch  20 | Train Loss: 0.443 | Train Acc: 84.64% | Val Loss: 0.43 | Val Acc: 85.29%\n",
            "Epoch  40 | Train Loss: 0.323 | Train Acc: 89.59% | Val Loss: 0.31 | Val Acc: 90.20%\n",
            "Epoch  60 | Train Loss: 0.278 | Train Acc: 91.34% | Val Loss: 0.27 | Val Acc: 91.55%\n",
            "Epoch  80 | Train Loss: 0.254 | Train Acc: 92.28% | Val Loss: 0.26 | Val Acc: 92.75%\n",
            "Epoch 100 | Train Loss: 0.238 | Train Acc: 92.82% | Val Loss: 0.25 | Val Acc: 92.75%\n",
            "\n",
            "GCN test accuracy: 91.70%\n",
            "\n"
          ]
        }
      ],
      "source": [
        "# Load Facebook Page-Page\n",
        "dataset = FacebookPagePage(root=\".\")\n",
        "data = dataset[0]\n",
        "data.train_mask = range(18000)\n",
        "data.val_mask = range(18001, 20000)\n",
        "data.test_mask = range(20001, 22470)\n",
        "\n",
        "# Train GCN\n",
        "gcn = GCN(dataset.num_features, 16, dataset.num_classes)\n",
        "print(gcn)\n",
        "gcn.fit(data, epochs=100)\n",
        "acc = gcn.test(data)\n",
        "print(f'\\nGCN test accuracy: {acc*100:.2f}%\\n')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 10,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "zLfbT3i0RJG-",
        "outputId": "4d08f6e4-de3a-47ef-c7fe-3e00d4b2367a"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Dataset: WikipediaNetwork()\n",
            "-------------------\n",
            "Number of graphs: 1\n",
            "Number of nodes: 2277\n",
            "Number of unique features: 2325\n",
            "Number of classes: 5\n",
            "\n",
            "Graph:\n",
            "------\n",
            "Edges are directed: True\n",
            "Graph has isolated nodes: False\n",
            "Graph has loops: True\n"
          ]
        }
      ],
      "source": [
        "from torch_geometric.datasets import WikipediaNetwork\n",
        "import torch_geometric.transforms as T\n",
        "\n",
        "dataset = WikipediaNetwork(root=\".\", name=\"chameleon\", transform = T.RandomNodeSplit(num_val=200, num_test=500))\n",
        "data = dataset[0]\n",
        "\n",
        "# Print information about the dataset\n",
        "print(f'Dataset: {dataset}')\n",
        "print('-------------------')\n",
        "print(f'Number of graphs: {len(dataset)}')\n",
        "print(f'Number of nodes: {data.x.shape[0]}')\n",
        "print(f'Number of unique features: {dataset.num_features}')\n",
        "print(f'Number of classes: {dataset.num_classes}')\n",
        "\n",
        "# Print information about the graph\n",
        "print(f'\\nGraph:')\n",
        "print('------')\n",
        "print(f'Edges are directed: {data.is_directed()}')\n",
        "print(f'Graph has isolated nodes: {data.has_isolated_nodes()}')\n",
        "print(f'Graph has loops: {data.has_self_loops()}')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "from io import BytesIO\n",
        "from urllib.request import urlopen\n",
        "from zipfile import ZipFile\n",
        "\n",
        "url = 'https://snap.stanford.edu/data/wikipedia.zip'\n",
        "with urlopen(url) as zurl:\n",
        "    with ZipFile(BytesIO(zurl.read())) as zfile:\n",
        "        zfile.extractall('.')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 11,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ynJBr0-SP2xH",
        "outputId": "de91c284-cae7-49b5-e780-7210696565bf"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "'wget' is not recognized as an internal or external command,\n",
            "operable program or batch file.\n",
            "'unzip' is not recognized as an internal or external command,\n",
            "operable program or batch file.\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "tensor([2.2330, 3.9079, 3.9329,  ..., 1.9956, 4.3598, 2.4409],\n",
              "       dtype=torch.float64)"
            ]
          },
          "execution_count": 11,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "import pandas as pd\n",
        "\n",
        "df = pd.read_csv('wikipedia/chameleon/musae_chameleon_target.csv')\n",
        "values = np.log10(df['target'])\n",
        "data.y = torch.tensor(values)\n",
        "data.y"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 12,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 613
        },
        "id": "rQ5wJAQuTaFn",
        "outputId": "563ea279-7a2d-4cc4-f527-67af17be0197"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "<BarContainer object of 63 artists>"
            ]
          },
          "execution_count": 12,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "from torch_geometric.utils import degree\n",
        "from collections import Counter\n",
        "\n",
        "# Get list of degrees for each node\n",
        "degrees = degree(data.edge_index[0]).numpy()\n",
        "\n",
        "# Count the number of nodes for each degree\n",
        "numbers = Counter(degrees)\n",
        "\n",
        "# Bar plot\n",
        "fig, ax = plt.subplots()\n",
        "ax.set_xlabel('Node degree')\n",
        "ax.set_ylabel('Number of nodes')\n",
        "plt.bar(numbers.keys(), numbers.values())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 13,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 655
        },
        "id": "zHWhlvl6aQzB",
        "outputId": "a93d234f-5cb3-4351-862d-6ab3fa57b3ba"
      },
      "outputs": [
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "C:\\Users\\labon\\AppData\\Local\\Temp\\ipykernel_5392\\2660044443.py:5: UserWarning: \n",
            "\n",
            "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
            "\n",
            "Please adapt your code to use either `displot` (a figure-level function with\n",
            "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
            "\n",
            "For a guide to updating your code to use the new functions, please see\n",
            "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
            "\n",
            "  fig = sns.distplot(df['target'], fit=norm)\n"
          ]
        },
        {
          "data": {
            "image/png": "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rl1b472u4Omnn2b48OE0bNiQM2fOMHnyZEwmE3fddZejS6vynnrqKXr16sXrr7/OHXfcwZYtW/j888/5/PPPHV2a/dnEKaxevdoGXPS47777HF1alVbSZwbYvvrqK0eXVuX94x//sDVs2NDm6upqq1Onjm3gwIG2X3/91dFlVVv9+/e3PfHEE44uo8obNWqULTQ01Obq6mqrV6+ebdSoUbajR486uqxq46effrK1bdvW5ubmZmvZsqXt888/d3RJFcJgs9lsDspVIiIiInanAcUiIiLiVBRuRERExKko3IiIiIhTUbgRERERp6JwIyIiIk5F4UZEREScisKNiIiIOBWFGxEREXEqCjciIiLiVBRuRMShrrnmGp588klHl1GkqtUjImWncCMi1V5eXp6jSxCRKkThRkQc5v7772ft2rV88MEHGAwGDAYDx44d44EHHqBRo0Z4eHjQokULPvjgg4vOGzFiBK+99hp169alRYsWAGzYsIGIiAjc3d3p0qULixYtwmAwEBkZWXTu3r17GTp0KN7e3gQHB3PvvfeSmJh4yXpOnjxZWR+HiNiJ2dEFiEjN9cEHH3D48GHatm3LK6+8AkBAQAD169dn3rx51K5dmw0bNvDQQw8RGhrKHXfcUXTuqlWr8PX1ZeXKlQCkpaUxfPhwhg0bxpw5c4iKirqoeyklJYVrr72WBx98kPfee4/s7Gyee+457rjjDn7//fcS66lTp07lfBgiYjcKNyLiMH5+fri6uuLp6UlISEjR8y+//HLR/27UqBEbN27khx9+KBZuvLy8+OKLL3B1dQVg2rRpGAwGpk+fjru7O61btyYmJoZx48YVnfPxxx/TsWNHXn/99aLnZsyYQVhYGIcPH6Z58+Yl1iMi1YvCjYhUOVOnTmXGjBlER0eTnZ1NXl4eERERxY5p165dUbABOHToEO3bt8fd3b3ouW7duhU7Z9euXaxevRpvb++L7nns2DGaN29u3zciIg6hcCMiVcr333/P008/zTvvvEPPnj3x8fHhrbfeYvPmzcWO8/LyKvO1MzIyGD58OG+++eZFr4WGhpa7ZhGpWhRuRMShXF1dsVgsRV//+eef9OrVi0ceeaTouWPHjl3xOi1atODbb78lNzcXNzc3ALZu3VrsmE6dOrFgwQLCw8Mxm0v+8fe/9YhI9aPZUiLiUOHh4WzevJmTJ0+SmJhIs2bN2LZtGytWrODw4cO8+OKLF4WUkowePRqr1cpDDz3EgQMHWLFiBW+//TYABoMBgPHjx5OUlMRdd93F1q1bOXbsGCtWrGDs2LFFgeZ/67FarRX35kWkQijciIhDPf3005hMJlq3bk2dOnUYMmQIt956K6NGjaJ79+6cO3euWCvOpfj6+vLTTz8RGRlJREQE//73v5k0aRJA0TicunXr8ueff2KxWBg8eDDt2rXjySefxN/fH6PRWGI90dHRFffmRaRCGGw2m83RRYiIVITZs2czduxYUlNT8fDwcHQ5IlJJNOZGRJzGrFmzaNy4MfXq1WPXrl1Fa9go2IjULAo3IuI04uLimDRpEnFxcYSGhnL77bfz2muvObosEalk6pYSERERp6IBxSIiIuJUFG5ERETEqSjciIiIiFNRuBERERGnonAjIiIiTkXhRkRERJyKwo2IiIg4FYUbERERcSr/H/Fm/yb6+ypGAAAAAElFTkSuQmCC",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "import seaborn as sns\n",
        "from scipy.stats import norm\n",
        "\n",
        "df['target'] = values\n",
        "fig = sns.distplot(df['target'], fit=norm)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 14,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "73a22SlULnsg",
        "outputId": "bb93fa9a-36b0-479d-a739-a414de8d4a41"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "GCN(\n",
            "  (gcn1): GCNConv(2325, 512)\n",
            "  (gcn2): GCNConv(512, 256)\n",
            "  (gcn3): GCNConv(256, 128)\n",
            "  (linear): Linear(in_features=128, out_features=1, bias=True)\n",
            ")\n",
            "Epoch   0 | Train Loss: 12.84923 | Val Loss: 13.00931\n",
            "Epoch  20 | Train Loss: 10.88506 | Val Loss: 10.90778\n",
            "Epoch  40 | Train Loss: 4.79482 | Val Loss: 5.28797\n",
            "Epoch  60 | Train Loss: 1.39142 | Val Loss: 2.00964\n",
            "Epoch  80 | Train Loss: 0.69881 | Val Loss: 0.93502\n",
            "Epoch 100 | Train Loss: 0.48443 | Val Loss: 0.83363\n",
            "Epoch 120 | Train Loss: 0.41669 | Val Loss: 0.78679\n",
            "Epoch 140 | Train Loss: 0.42846 | Val Loss: 0.78785\n",
            "Epoch 160 | Train Loss: 0.38060 | Val Loss: 0.79018\n",
            "Epoch 180 | Train Loss: 0.35250 | Val Loss: 0.67915\n",
            "Epoch 200 | Train Loss: 0.33834 | Val Loss: 0.75305\n",
            "\n",
            "GCN test loss: 0.75656\n",
            "\n"
          ]
        }
      ],
      "source": [
        "class GCN(torch.nn.Module):\n",
        "    \"\"\"Graph Convolutional Network\"\"\"\n",
        "    def __init__(self, dim_in, dim_h, dim_out):\n",
        "        super().__init__()\n",
        "        self.gcn1 = GCNConv(dim_in, dim_h*4)\n",
        "        self.gcn2 = GCNConv(dim_h*4, dim_h*2)\n",
        "        self.gcn3 = GCNConv(dim_h*2, dim_h)\n",
        "        self.linear = torch.nn.Linear(dim_h, dim_out)\n",
        "\n",
        "    def forward(self, x, edge_index):\n",
        "        h = self.gcn1(x, edge_index)\n",
        "        h = torch.relu(h)\n",
        "        h = F.dropout(h, p=0.5, training=self.training)\n",
        "        h = self.gcn2(h, edge_index)\n",
        "        h = torch.relu(h)\n",
        "        h = F.dropout(h, p=0.5, training=self.training)\n",
        "        h = self.gcn3(h, edge_index)\n",
        "        h = torch.relu(h)\n",
        "        h = self.linear(h)\n",
        "        return h\n",
        "\n",
        "    def fit(self, data, epochs): \n",
        "        optimizer = torch.optim.Adam(self.parameters(),\n",
        "                                      lr=0.02,\n",
        "                                      weight_decay=5e-4)\n",
        "\n",
        "        self.train()\n",
        "        for epoch in range(epochs+1):\n",
        "            optimizer.zero_grad()\n",
        "            out = self(data.x, data.edge_index)\n",
        "            loss = F.mse_loss(out.squeeze()[data.train_mask], data.y[data.train_mask].float())\n",
        "            loss.backward()\n",
        "            optimizer.step()\n",
        "            if epoch % 20 == 0:\n",
        "                val_loss = F.mse_loss(out.squeeze()[data.val_mask], data.y[data.val_mask])\n",
        "                print(f\"Epoch {epoch:>3} | Train Loss: {loss:.5f} | Val Loss: {val_loss:.5f}\")\n",
        "\n",
        "    def test(self, data):\n",
        "        self.eval()\n",
        "        out = self(data.x, data.edge_index)\n",
        "        return F.mse_loss(out.squeeze()[data.test_mask], data.y[data.test_mask].float())\n",
        "\n",
        "# Create the Vanilla GNN model\n",
        "gcn = GCN(dataset.num_features, 128, 1)\n",
        "print(gcn) \n",
        "\n",
        "# Train\n",
        "gcn.fit(data, epochs=200)\n",
        "\n",
        "# Test\n",
        "loss = gcn.test(data)\n",
        "print(f'\\nGCN test loss: {loss:.5f}\\n')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 15,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "25B1H1cSWOcH",
        "outputId": "af95c849-cb50-4e9a-c06c-a18990a75326"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "===========================================\n",
            "MSE = 0.7566 | RMSE = 0.8698 | MAE = 0.6758\n",
            "===========================================\n"
          ]
        }
      ],
      "source": [
        "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
        "\n",
        "out = gcn(data.x, data.edge_index)\n",
        "y_pred = out.squeeze()[data.test_mask].detach().numpy()\n",
        "mse = mean_squared_error(data.y[data.test_mask], y_pred)\n",
        "mae = mean_absolute_error(data.y[data.test_mask], y_pred)\n",
        "\n",
        "print('=' * 43)\n",
        "print(f'MSE = {mse:.4f} | RMSE = {np.sqrt(mse):.4f} | MAE = {mae:.4f}')\n",
        "print('=' * 43)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 16,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 618
        },
        "id": "cAfSxyEOO7N8",
        "outputId": "87d813cf-cd28-472f-8611-d7ef431f7a87"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "[Text(0.5, 0, 'Ground truth'), Text(0, 0.5, 'Predicted values')]"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        },
        {
          "data": {
            "image/png": "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",
            "text/plain": [
              "<Figure size 640x480 with 1 Axes>"
            ]
          },
          "metadata": {},
          "output_type": "display_data"
        }
      ],
      "source": [
        "fig = sns.regplot(x=data.y[data.test_mask].numpy(), y=y_pred)\n",
        "fig.set(xlabel='Ground truth', ylabel='Predicted values')"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": "book2",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.16"
    },
    "vscode": {
      "interpreter": {
        "hash": "680c1aa8c5daeb1786696be3a00b56fce4caa6169a61a7bba9980d1440fe1e5c"
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
